/*
 * @Author: 一盏青灯欲锁魂
 * @Date: 2021-06-15 16:32:50
 * @LastEditTime: 2021-06-24 09:43:42
 * @Description: 路由守卫、权限控制
 * @FilePath: \nest_demo\src\module\index\index.controller.ts
 */
import { Controller, Get, Query, UseGuards } from '@nestjs/common';
import { RoleGuardService } from './role_guard.service';
import { RolesGuard } from '../../tools/guard/roles.guard';
import { Roles } from 'src/tools/decorator/roles.decorator';

/*
    * 路由守卫的作用：
    *   1. 限制接口请求，只有具备指定权限的角色才能够正常访问
    * 
    * 路由守卫的使用步骤：
    *   1. 自定义一个路由守卫规则，详见roles.guard.ts文件
    *   2. 自定义一个装饰器，详见roles.decorator.ts文件
    *   3. 在controller控制器上通过@UseGuards()装饰器使用自定义路由守卫
    *   4. 在指定路由上使用自定义装饰器, 设置权限码
*/ 

@Controller('/role-guard')
@UseGuards(RolesGuard)
export class RoleGuardController{
    constructor(private readonly roleGuardService:RoleGuardService){}

    @Get()
    @Roles('admin')
    getUrlData(){
        return this.roleGuardService.getData();
    }
}